home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / hptex / hptex.tex (.txt) < prev    next >
Texinfo Document  |  1992-08-26  |  36KB  |  699 lines

  1. % This is the HP TeX text format version A.00.00 as of Feb. 14, 1984.
  2. % It is compatible with the plain TeX format that's described in The TeXbook.
  3. % Copyright 1984 Hewlett-Packard Co.
  4. % NOTE 1, NOTE 2, etc. refer to notes in the file HPTEX.DOC
  5. \input PLAIN.TEXT                                                     % NOTE 1
  6. \message{Preloading the HP TeX codes,}
  7. % SPECIAL CATCODES
  8. \catcode`@=11                                                         % NOTE 2
  9. % HPTEX
  10. \def\HPTEX{HP\nobreak\ \TeX}
  11. \let\HpTeX=\HPTEX
  12. \def\fmtname{HP TeX}\def\fmtversion{A.00.00}
  13. % LEADERS
  14. \def\dotfil{\tenrm\leaders\hbox to8\p@{\hss.\hss}\hss}                % NOTE 3
  15. % CONSTANT VALUES
  16. \chardef\zer@=0
  17. \chardef\f@ur=4
  18. \skipdef\skip@ii=2
  19. \maxdepth=2pt
  20. \message{fonts,}
  21. % FONTS                                                               % NOTE 4
  22. \let\fontcheck=1                                                      % NOTE 5
  23. \def\fontdef#1=#2 {\def#1{\font@{#1}{#2}}}                            % NOTE 6
  24. \def\font@#1#2{{\let\fontcheck=0\ifx0\fontcheck\egroup\global\font#1=#2#1%
  25.     \else}\string#1 \fi}%--The space after \string#1 is necessary.
  26. % ROMAN TEXT
  27. \fontdef\twentyfourrm={amr10 scaled \magstep5}
  28. \fontdef\eighteenrm={amr10 scaled \magstep3}
  29. \fontdef\fourteenrm={amr10 scaled \magstep2}
  30. \font\twelverm=amr10 scaled \magstep1
  31. %\font\tenrm=amr10
  32. \font\ninerm=amr9
  33. \font\eightrm=amr8
  34. %\font\sevenrm=amr7
  35. \font\sixrm=amr6
  36. %\font\fiverm=amr5
  37. % MATH ITALIC
  38. \fontdef\twentyfouri={ammi10 scaled \magstep5}
  39. \fontdef\eighteeni={ammi10 scaled \magstep3}
  40. \fontdef\fourteeni={ammi10 scaled \magstep2}
  41. \fontdef\twelvei={ammi10 scaled \magstep1}
  42. %\font\teni=ammi10
  43. \fontdef\ninei={ammi9}
  44. \fontdef\eighti={ammi8}
  45. %\font\seveni=ammi7
  46. \fontdef\sixi={ammi6}
  47. %\font\fivei=ammi5
  48. % MATH SYMBOLS
  49. \fontdef\twentyfoursy={amsy10 scaled \magstep5}
  50. \fontdef\eighteensy={amsy10 scaled \magstep3}
  51. \fontdef\fourteensy={amsy10 scaled \magstep2}
  52. \fontdef\twelvesy={amsy10 scaled \magstep1}
  53. %\font\tensy=amsy10
  54. \fontdef\ninesy={amsy9}
  55. \fontdef\eightsy={amsy8}
  56. %\font\sevensy=amsy7
  57. \fontdef\sixsy={amsy6}
  58. %\font\fivesy=amsy5
  59. % BOLD MATH SYMBOLS
  60. \fontdef\tenbfsy={ambsy10}
  61. % MATH EXTENSION
  62. %\font\tenex=amex10
  63. % SANS SERIF
  64. \fontdef\fourteenss={amss10 scaled \magstep2}
  65. \fontdef\twelvess={amss10 scaled \magstep1}
  66. \font\tenss=amss10
  67. \font\eightss=amssq8
  68. % SANS SERIF ITALIC
  69. \font\tenitss=amssi10
  70. \font\eightitss=amssqi8
  71. % BOLDFACE EXTENDED
  72. \fontdef\twentyfourbf={ambx10 scaled \magstep5}
  73. \fontdef\eighteenbf={ambx10 scaled \magstep3}
  74. \fontdef\fourteenbf={ambx10 scaled \magstep2}
  75. \font\twelvebf=ambx10 scaled \magstep1
  76. %\font\tenbf=ambx10
  77. \font\ninebf=ambx9
  78. \font\eightbf=ambx8
  79. %\font\sevenbf=ambx7
  80. \font\sixbf=ambx6
  81. %\font\fivebf=ambx5
  82. % TYPEWRITER
  83. \fontdef\twentyfourtt={amtt10 scaled \magstep5}
  84. \fontdef\eighteentt={amtt10 scaled \magstep3}
  85. \fontdef\fourteentt={amtt10 scaled \magstep2}
  86. \fontdef\twelvett={amtt10 scaled \magstep1}
  87. %\font\tentt=amtt10
  88. \font\ninett=amtt9
  89. \font\eighttt=amtt8
  90. % SLANTED TYPEWRITER
  91. \font\tensltt=amsltt10
  92. % SLANTED ROMAN
  93. \fontdef\twentyfoursl={amsl10 scaled \magstep5}
  94. \fontdef\eighteensl={amsl10 scaled \magstep3}
  95. \fontdef\fourteensl={amsl10 scaled \magstep2}
  96. \fontdef\twelvesl={amsl10 scaled \magstep1}
  97. %\font\tensl=amsl10
  98. \font\ninesl=amsl9
  99. \font\eightsl=amsl8
  100. % TEXT ITALIC
  101. \fontdef\twentyfourit={amti10 scaled \magstep5}
  102. \fontdef\eighteenit={amti10 scaled \magstep3}
  103. \fontdef\fourteenit={amti10 scaled \magstep2}
  104. \fontdef\twelveit={amti10 scaled \magstep1}
  105. %\font\tenit=amti10
  106. \font\nineit=amti9
  107. \font\eightit=amti8
  108. \fontdef\sevenit={amti7}
  109. % UNSLANTED TEXT ITALIC
  110. \font\tenuit=amu10
  111. % CAPS AND SMALL CAPS
  112. \font\tencsc=amcsc10
  113. % SANS SERIF BOLD EXTENDED
  114. \font\tenbfss=amssbx10
  115. % BOLD EXTENDED SLANTED
  116. \font\tenslbf=ambxsl10
  117. % DUNHILL STYLE
  118. \font\tendh=amdunh10
  119. % FOR TITLES
  120. \font\titlefont=amr7 scaled \magstep4
  121. % BIG FONT
  122. \font\bigfont=amssbx10 scaled \magstep2
  123. \message{macros,}
  124. % MACROS TO SET FSTYLE                                                % NOTE 7
  125. \def\rm{\fam\z@\def\fstyle{rm}\setfont}
  126. \def\it{\fam\itfam\def\fstyle{it}\setfont}
  127. \def\bf{\fam\bffam\def\fstyle{bf}\setfont\ifmmode{\tenbfsy}%
  128.                                       \textfont2=\tenbfsy\fi}
  129. \def\sl{\fam\slfam\def\fstyle{sl}\setfont}
  130. \def\sa{\def\fstyle{ss}\setfont}
  131. \def\tt{\fam\ttfam\def\fstyle{tt}\setfont}
  132. \newfam\ssfam
  133. % MACROS TO SET FSIZE                                                 % NOTE 8
  134. \def\fivepoint{\def\fsize{five}\setfont\let\sfont=\fivepoint%
  135.                \baselineskip7pt%
  136.                \setbox\strutbox=\hbox{\vrule height4.5pt depth1.5pt width0pt}%
  137.                \textfont0=\fiverm \scriptfont0=\fiverm%
  138.                                 \scriptscriptfont0=\fiverm%
  139.                             \textfont1=\fivei \scriptfont1=\fivei%
  140.                                 \scriptscriptfont1=\fivei%
  141.                             \textfont2=\fivesy \scriptfont2=\fivesy%
  142.                                 \scriptscriptfont2=\fivesy}
  143. \def\sixpoint{\def\fsize{six}\setfont\let\sfont=\fivepoint%
  144.                \baselineskip8pt%
  145.                \setbox\strutbox=\hbox{\vrule height5pt depth2pt width0pt}%
  146.                \textfont0=\sixrm \scriptfont0=\fiverm%
  147.                               \scriptscriptfont0=\fiverm%
  148.                \scriptfont1=\fivei \scriptscriptfont1=\fivei%
  149.                \scriptfont2=\fivesy \scriptscriptfont2=\fivesy%
  150.                \def\changes{{\sixi\sixsy}%
  151.                             \textfont1=\sixi \textfont2=\sixsy}%
  152.                             \ifmmode\changes\else\everymath{\changes}%
  153.                                      \everydisplay{\changes}\fi}
  154. \def\sevenpoint{\def\fsize{seven}\setfont\let\sfont=\fivepoint%
  155.                   \baselineskip9pt%
  156.                   \setbox\strutbox=\hbox{\vrule height6pt depth2pt width0pt}%
  157.                   \textfont0=\sevenrm \scriptfont0=\sixrm%
  158.                              \scriptscriptfont0=\fiverm%
  159.                   \textfont1=\seveni \scriptscriptfont1=\fivei%
  160.                   \textfont2=\sevensy \scriptscriptfont2=\fivesy%
  161.                   \def\changes{{\sixi\sixsy}%
  162.                           \scriptfont1=\sixi%
  163.                           \scriptfont2=\sixsy}%
  164.                \ifmmode\changes\else\everymath{\changes}%
  165.                                                \everydisplay{\changes}\fi}
  166. \def\eightpoint{\def\fsize{eight}\setfont\let\sfont=\sixpoint%
  167.                   \baselineskip9pt%
  168.                   \setbox\strutbox=\hbox{\vrule height7pt depth2pt width0pt}%
  169.                   \textfont0=\eightrm \scriptfont0=\sixrm%
  170.                               \scriptscriptfont0=\fiverm%
  171.                   \scriptscriptfont1=\fivei%
  172.                   \scriptscriptfont2=\fivesy%
  173.                   \def\changes{{\eighti\sixi\eightsy\sixsy}%
  174.                             \textfont1=\eighti \scriptfont1=\sixi%
  175.                             \textfont2=\eightsy \scriptfont2=\sixsy}%
  176.                \ifmmode\changes\else\everymath{\changes}%
  177.                                    \everydisplay{\changes}\fi}
  178. \def\ninepoint{\def\fsize{nine}\setfont\let\sfont=\sixpoint%
  179.                   \baselineskip11pt%
  180.                   \setbox\strutbox=\hbox{\vrule height8pt depth3pt width0pt}%
  181.                   \textfont0=\ninerm \scriptfont0=\sevenrm%
  182.                                \scriptscriptfont0\fiverm%
  183.                   \scriptfont1=\seveni \scriptscriptfont1\fivei%
  184.                   \scriptfont2=\sevensy \scriptscriptfont2\fivesy%
  185.                \def\changes{{\ninei\ninesy}%
  186.                           \textfont1=\ninei%
  187.                           \textfont2=\ninesy}%
  188.                           \ifmmode\changes\else\everymath{\changes}%
  189.                                     \everydisplay{\changes}\fi}
  190. \def\tenpoint{\def\fsize{ten}\setfont\let\sfont=\sevenpoint%
  191.                 \baselineskip12pt%
  192.                 \setbox\strutbox=\hbox{\vrule height8.5pt depth3.5pt width0pt}%
  193.                 \textfont0=\tenrm \scriptfont0=\sevenrm%
  194.                            \scriptscriptfont0\fiverm%
  195.                 \textfont1=\teni \scriptfont1=\seveni%
  196.                              \scriptscriptfont1\fivei%
  197.                 \textfont2=\tensy \scriptfont2=\sevensy%
  198.                              \scriptscriptfont2\fivesy}
  199. \def\twelvepoint{\def\fsize{twelve}\setfont\let\sfont=\eightpoint%
  200.                   \baselineskip14pt%
  201.                   \setbox\strutbox=\hbox{\vrule height10pt depth4pt width0pt}%
  202.                   \textfont0=\twelverm \scriptfont0=\ninerm%
  203.                              \scriptscriptfont0=\sevenrm%
  204.                   \scriptscriptfont1=\seveni%
  205.                   \scriptscriptfont2=\sevensy%
  206.                   \def\changes{{\twelvei\ninei\twelvesy\ninesy}%
  207.                            \textfont1=\twelvei \scriptfont1=\ninei%
  208.                            \textfont2=\twelvesy \scriptfont2=\ninesy}%
  209.                \ifmmode\changes\else\everymath{\changes}%
  210.                                      \everydisplay{\changes}\fi}
  211. \def\fourteenpoint{\def\fsize{fourteen}\setfont\let\sfont=\tenpoint%
  212.      \baselineskip16pt%
  213.      \setbox\strutbox=\hbox{\vrule height12pt depth4pt width0pt}%
  214.      \scriptfont0=\tenrm \scriptscriptfont0=\sevenrm%
  215.      \scriptfont1=\teni \scriptscriptfont1=\seveni%
  216.      \scriptfont2=\tensy \scriptscriptfont2=\sevensy%
  217.      \def\changes{{\fourteeni\fourteenrm\fourteensy}%
  218.                 \textfont0=\fourteenrm%
  219.                 \textfont1=\fourteeni%
  220.                 \textfont2=\fourteensy}%
  221.      \ifmmode\changes\else\everymath{\changes}\everydisplay{\changes}\fi}
  222. \def\eighteenpoint{\def\fsize{eighteen}\setfont\let\sfont=\tenpoint%
  223.       \baselineskip18pt%
  224.       \setbox\strutbox=\hbox{\vrule height15pt depth3pt width0pt}%
  225.       \scriptfont0=\twelverm \scriptscriptfont0=\tenrm%
  226.       \scriptscriptfont1=\teni%
  227.       \scriptscriptfont2=\tensy%
  228.       \def\changes{{\eighteenrm\eighteeni\twelvei\eighteensy\twelvesy}%
  229.                  \textfont0=\eighteenrm%
  230.                  \textfont1=\eighteeni \scriptfont1=\twelvei%
  231.                  \textfont2=\eighteensy \scriptfont2=\twelvesy}%
  232.       \ifmmode\changes\else\everymath{\changes}%
  233.                             \everydisplay{\changes}\fi}
  234. \def\twentyfourpoint{\def\fsize{twentyfour}\setfont\let\sfont=\tenpoint%
  235.       \baselineskip24pt%
  236.       \setbox\strutbox=\hbox{\vrule height21.5pt depth2.5pt width0pt}%
  237.       \def\changes{{\twentyfourrm\eighteenrm\fourteenrm\twentyfouri%
  238.                     \eighteeni\fourteeni\twentyfoursy\eighteensy\fourteensy}%
  239.                 \textfont0=\twentyfourrm \scriptfont0=\eighteenrm %
  240.                   \scriptscriptfont0=\fourteenrm%
  241.                 \textfont1=\twentyfouri \scriptfont1=\eighteeni%
  242.                   \scriptscriptfont1=\fourteeni%
  243.                 \textfont2=\twentyfoursy \scriptfont2=\eighteensy%
  244.                   \scriptscriptfont2=\fourteensy}%
  245.        \ifmmode\changes\else\everymath{\changes}\everydisplay{\changes}\fi}
  246. % MACROS TO SET CURRENT FONT USING FSTYLE AND FSIZE
  247. \newif\ifnofont@
  248. \def\tryfont#1{\expandafter\ifx\csname#1\endcsname\relax\nofont@true % NOTE  9
  249.     \else\nofont@false\csname#1\endcsname\fi}
  250. \def\setfont{\tryfont{\ffam\fsize\fstyle}%                           % NOTE 10
  251.     \ifnofont@\tryfont{\ffam\fsize rm}%
  252.     \ifnofont@\tryfont{\ffam tenrm}%
  253.     \ifnofont@\tenrm\fi\fi\expandafter
  254.     \fonterr\csname\ffam\fsize\fstyle\endcsname{\the\font}\fi}
  255. \def\fonterr#1#2{\immediate\write\m@ne{! font #1is undefined,
  256.     I'm using #2instead.}\xdef#1{#2}}
  257. % DEFAULTS                                                            % NOTE 11
  258. \fam\z@\tenrm\def\ffam{}\def\fstyle{rm}\def\fsize{ten}\let\sfont=\sevenpoint
  259. % LINE MACROS                                                         % NOTE 12
  260. \def\lline#1{\hbox to\hsize{\hskip\leftskip#1\hskip\rightskip}}
  261. \def\leftline#1{\lline{#1\hss}}
  262. \def\rightline#1{\lline{\hss#1}}
  263. \def\centerline#1{\lline{\hss#1\hss}}
  264. % MORE MACROS
  265. \def\narrow#1{\advance\leftskip#1\advance\rightskip#1}
  266. \def\narrower{\narrow\parindent}                                      % NOTE 13
  267. \def\narrow@{\narrow\inset}
  268. \def\inc#1{\advance#1\@ne}
  269. \def\dec#1{\advance#1\m@ne}
  270. \def\ignore#1{\relax}
  271. \def\okbreak{\par\penalty-200}
  272. \def\need{\afterassignment\need@\dimen@}                              % NOTE 14
  273. \def\need@{\vskip\dimen@ minus\dimen@\okbreak\vskip-\dimen@ minus-\dimen@}
  274. \def\for#1=#2to#3do#4{#1=#2\ifnum#2>#3\else\let\next@=\fnext@         % NOTE 15
  275.     \def\fcount@{#1}\def\fexit@{#3}\def\floop@{#4}\next@\fi}
  276. \def\fnext@{\floop@\ifnum\fcount@<\fexit@\inc\fcount@                 % NOTE 16
  277.     \else\let\next@=\relax\fi\next@}
  278. \def\super#1{\/\raise.4em\hbox{\sfont#1}\thinspace}
  279. \def\sub#1{\lower.25em\hbox{\sfont#1}\thinspace}
  280. \def\lbreak{\hfill\break}
  281. \def\uline#1{\setbox0=\hbox{#1}\dimen@=-\dp0\advance\dimen@ .23em     % NOTE 17
  282.     \ifvmode\indent\fi\hbox to \wd0{\lower.27em
  283.     \vbox{\box0\vskip\dimen@\hrule height.04em}}}
  284. % START AND FINISH GROUP STRUCTURE                                    % NOTE 18
  285. \def\start#1{\errfalse\ifinvalid@{#1}\else\begingroup                 % NOTE 19
  286.     \def\blockname@{#1}\csname BEGIN#1\endcsname\fi\Error}
  287. \def\finish#1{\errfalse\ifinvalid@{#1}\else\matchup@{#1}\fi\Error}    % NOTE 20
  288. \def\ifinvalid@#1{\expandafter\ifx\csname BEGIN#1\endcsname\relax     % NOTE 21
  289.     \errset{I don't understand {#1}, it may be misspelled}}
  290. \def\matchup@#1{\def\test@{#1}%                                       % NOTE 22
  291.     \expandafter\ifx\csname blockname@\endcsname\relax
  292.             \errset{Extra \string\finish{\test@} ignored}%
  293.     \else\ifx\test@\blockname@\done
  294.     \else\errset{Missing \string\finish{\blockname@} inserted}%
  295.     \done\matchup@{#1}\fi\fi}
  296. \def\done{\csname END\blockname@\endcsname\endgroup}                  % NOTE 23
  297. % GENERAL ERROR HANDLING                                              % NOTE 24
  298. \def\errfalse{\global\let\iferr=\iffalse}
  299. \def\errtrue{\global\let\iferr=\iftrue}
  300. \def\errset#1{\iferr\immediate\write0{! \error}\else\errtrue\fi\xdef\error{#1}}
  301. \def\Error{\iferr\errmessage{\error}\fi}
  302. % DATE AND TIME MACROS
  303. \newcount\cntA@\newcount\cntB@\newcount\cntC@
  304. \def\mon{\ifcase\month\relax\or January\or February\or March\or       % NOTE 25
  305.     April\or May\or June\or July\or August\or September\or October\or
  306.     November\or December\fi}
  307. \def\date{\mon\nobreak\ \number\day, \number\year}                    % NOTE 26
  308. \def\hour{{\cntA@=\time \cntB@=\cntA@                                 % NOTE 27
  309.     \divide\cntA@60 \cntC@=\cntA@ \multiply\cntC@60
  310.     \advance\cntB@-\cntC@\ifnum\cntA@>11
  311.     \advance\cntA@-12 \def\time@{PM}\else\def\time@{AM}\fi
  312.     \ifnum\cntA@=0 \cntA@=12 \fi\number\cntA@
  313.     :\ifnum\cntB@<10 0\fi\number\cntB@\nobreak\ \time@}}
  314. % INDENTSTYLE
  315. \newdimen\indentsize\indentsize=20pt
  316. \newif\ifindent\indenttrue                                            % NOTE 28
  317. \def\indentstyle{\parindent\indentsize                                % NOTE 29
  318.     \ifindent\else\indenttrue\advance\parskip-5\p@\fi}
  319. \def\noindentstyle{\parindent\z@                                      % NOTE 30
  320.     \ifindent\indentfalse\advance\parskip5\p@\fi}
  321. \def\indentspace{\afterassignment\indent@\indentsize}                 % NOTE 31
  322. \def\indent@{\ifindent\parindent\indentsize\fi}
  323. \newdimen\inset
  324. \inset.5in
  325. \def\BEGINindent{\advance\leftskip \inset}
  326. \let\ENDindent=\par
  327. % RAGGED MARGIN AND JUSTIFIED MARGIN MACROS
  328. \def\fixmargin@{\dimen@=\rightskip\rightskip=\dimen@}                % NOTE 32
  329. \def\justify{\fixmargin@\spaceskip\z@\xspaceskip\z@}                 % NOTE 33
  330. \def\raggedright{\fixmargin@\advance\rightskip\z@ plus2em            % NOTE 34
  331.     \ifx\fstyle\tt@\else\spaceskip.3333em\xspaceskip.5em\fi}
  332. \def\tt@{tt}                                                         % NOTE 35
  333. % ITEM AND SUBITEM MACROS
  334. \newcount\icount@\newcount\scount@
  335. \newcount\idigit@\newcount\sdigit@
  336. \def\itemset@#1#2#3{\dimen@=\hsize \advance\dimen@-#2\inset          % NOTE 36
  337.     \parshape=\@ne#1\inset\dimen@\noindent
  338.     \hbox to\z@{\hss#3\enspace}\ignorespaces}
  339. \def\itemlist#1{\medskip\resetsubitems\itemset@\@ne\tw@{#1}}         % NOTE 37
  340. \def\subitem#1{\smallskip\itemset@\tw@\f@ur{#1}}                     % NOTE 38
  341. \def\itempar{\smallskip\itemset@\@ne\tw@\empty}                      % NOTE 39
  342. \def\subitempar{\subitem\empty}                                      % NOTE 40
  343. \def\enditems{\bigskip\resetitems}
  344. % ITEMTAG AND SUBITEMTAG MACROS                                      % NOTE 41
  345. \def\square{\hbox{\hskip.5pt\vrule height.4em width.4em depth 0em}}
  346. \def\dott{$\bullet$}
  347. \def\emdash{---}
  348. \def\itemn@#1{\number#1\global\inc#1}                                 % NOTE 42
  349. \def\itemr@#1{\romannumeral#1\global\inc#1}                           % NOTE 43
  350. \def\itemR@#1{\uppercase\expandafter{\romannumeral#1}\global\inc#1}   % NOTE 44
  351. \def\iteml@#1#2{{\loop\char#1\ifnum#2>\@ne\dec#2\repeat}\global\inc#1%% NOTE 45
  352.    \ifnum#1>122 \global#1=97 \global\inc#2\fi \ifnum#1=91 \global#1=65
  353.    \global\inc#2\fi}
  354.    \def\item@ #1,#2,#3{\def\itemtag{#3}%                              % NOTE 46
  355.    \def\resetitems{\global\icount@=#1\global\idigit@=#2}\resetitems}
  356. \outer\def\numbereditems{\item@ 1,0,{\itemn@\icount@}}
  357. \outer\def\lettereditems{\item@ 97,1,{\iteml@\icount@\idigit@}}
  358. \outer\def\Lettereditems{\item@ 65,1,{\iteml@\icount@\idigit@}}
  359. \outer\def\romanitems{\item@ 1,0,{\itemr@\icount@}}
  360. \outer\def\Romanitems{\item@ 1,0,{\itemR@\icount@}}
  361. \outer\def\squareditems{\let\itemtag=\square\let\resetitems=\relax}
  362. \outer\def\dotteditems{\let\itemtag=\dott\let\resetitems=\relax}
  363. \outer\def\dasheditems{\let\itemtag=\emdash\let\resetitems=\relax}
  364. \def\itm{\itemlist{\tenrm\itemtag\ifx\relax\resetitems\else.\fi}}     % NOTE 47
  365. \def\subitem@ #1,#2,#3{\def\subitemtag{#3}%                           % NOTE 48
  366.     \def\resetsubitems{\global\scount@=#1\global\sdigit@=#2}\resetsubitems}
  367. \outer\def\numberedsubitems{\subitem@ 1,0,{\itemn@\scount@}}
  368. \outer\def\letteredsubitems{\subitem@ 97,1,{\iteml@\scount@\sdigit@}}
  369. \outer\def\Letteredsubitems{\subitem@ 65,1,{\iteml@\scount@\sdigit@}}
  370. \outer\def\romansubitems{\subitem@ 1,0,{\itemr@\scount@}}
  371. \outer\def\Romansubitems{\subitem@ 1,0,{\itemR@\scount@}}
  372. \outer\def\squaredsubitems{\let\subitemtag=\square\let\resetsubitems=\relax}
  373. \outer\def\dottedsubitems{\let\subitemtag=\dott\let\resetsubitems=\relax}
  374. \outer\def\dashedsubitems{\let\subitemtag=\emdash\let\resetsubitems=\relax}
  375. \def\sitm{\subitem{\tenrm\subitemtag\ifx\relax\resetsubitems\else.\fi}}
  376.                                                                       % NOTE 49
  377. \numbereditems\letteredsubitems                                       % NOTE 50
  378. % NOTE AND WARNING MACROS
  379. \def\BEGINnote{\bigskip\narrow@\narrow@\nobreak}                      % NOTE 51
  380. \let\ENDnote=\bigskip
  381. \def\BEGINwarning{\bigskip\nobreak\narrow@\narrow@\marginrule.02667in % NOTE 52
  382.     \nobreak\medskip\nobreak}
  383. \def\ENDwarning{\nobreak\medskip\nobreak\marginrule.02667in \bigskip}
  384. \def\marginrule#1 {\nointerlineskip\vbox to#1{\vss                    % NOTE 53
  385.     \lline{\leaders\hrule height#1\hss}}}
  386. % VERBATIM MODE                                                       % NOTE 54
  387. \newskip\blanksize@
  388. \bgroup\catcode`\*=3 \catcode`\$=13 \catcode`\#=13
  389.     \catcode`\^=13 \catcode`\_=13 \catcode`\|=13 \catcode`\~=13
  390. \gdef\BEGINverbatim{\parskip=0pt plus1pt
  391.     \catcode`\$=13 \def${\indent\hbox to \the\fontdimen\tw@\the\font
  392.                          {\hss\$\hss}}
  393.     \catcode`\&=12
  394.     \catcode`\#=13 \def#{\indent\hbox to \the\fontdimen\tw@\the\font
  395.                            {\hss*\#*\hss}}
  396.     \catcode`\^=13 \def^{\indent\hbox to \the\fontdimen\tw@\the\font
  397.                            {\hss*\mathchar"327D*\hss}}
  398.     \catcode`\_=13 \def_{\indent\hbox to \the\fontdimen\tw@\the\font
  399.                            {\hss\_\hss}}
  400.     \catcode`\%=12
  401.     \catcode`\|=13 \def|{\indent\hbox to \the\fontdimen\tw@\the\font
  402.                           {\hss*\mathchar"326A*\hss}}
  403.     \catcode`\~=13 \def~{\indent\hbox to \the\fontdimen\tw@\the\font
  404.                           {\hss*\mathchar"3218*\hss}}
  405.     \parindent\z@\lumplines\lumpspaces}
  406. \egroup
  407. % LUMPLINE AND LUMPSPACE MACROS                                       % NOTE 55
  408. {\catcode`\^^M=13 \gdef\lumplines{\catcode`\^^M=13 \let^^M=\lumpline@}}
  409. \def\lumpline@{\par\skip@=\z@\let\munch@=\lumpB@\futurelet\lump@\lumpA@}
  410. \def\lumpA@{\ifx\lumpline@\lump@\advance\skip@\baselineskip
  411.     \else\let\munch@=\relax\vskip\skip@\fi\munch@}
  412. \def\lumpB@#1{\futurelet\lump@\lumpA@}
  413. {\catcode`\ =13 \gdef\lumpspaces{\catcode`\ =13\relax\let =\lumpspace@}}
  414. \def\lumpspace@{\blanksize@=\the\fontdimen\tw@\the\font
  415.     \skip@=\z@\let\munch@=\lumpb@\futurelet\lump@\lumpa@}
  416. \def\lumpa@{\advance\skip@\blanksize@\ifx\lumpspace@\lump@
  417.     \else\let\munch@=\relax\hskip\skip@\fi\munch@}
  418. \def\lumpb@#1{\futurelet\lump@\lumpa@}
  419. \let\munch@=\relax
  420. % PAGE CONTROL MACROS                                                 % NOTE 56
  421. \def\newpage{\balance\ifold@\null\vfill\eject\fi}
  422. \def\evenpage{\newpage\ifodd\pageno\null\vfill\eject\fi}
  423. \def\oddpage{\newpage\ifodd\pageno\else\null\vfill\eject\fi}
  424. % HEADING AND FOOTING MACROS                                         % NOTE 57
  425. \newtoks\leftheading \newtoks\leftfooting
  426. \newtoks\rightheading \newtoks\rightfooting
  427. \newtoks\centerheading \newtoks\centerfooting
  428. \newtoks\insideheading \newtoks\insidefooting
  429. \newtoks\outsideheading \newtoks\outsidefooting
  430. \newtoks\headline \newtoks\footline
  431. \def\buildline{\let\lft=\zer@\let\rght=\@ne                          % NOTE 58
  432.     \ifdim\wd3=\z@\else\ifodd\pageno\let\lft=\thr@@\else\let\rght=\thr@@\fi\fi
  433.     \ifdim\wd4=\z@\else\ifodd\pageno\let\rght=\f@ur\else\let\lft=\f@ur\fi\fi
  434.     \triplehead\lft\tw@\rght}
  435. \def\triplehead#1#2#3{\skip@=1em\skip@ii=1em                         % NOTE 59
  436.     \dimen@=\wd#1\advance\dimen@-\wd#3%
  437.     \ifdim\dimen@>\z@\advance\skip@ii\dimen@ minus\dimen@
  438.     \else\advance\skip@-\dimen@ minus-\dimen@\fi
  439.     {\box#1\hskip\skip@\hfil\box#2\hfil\hskip\skip@ii\box#3}}
  440. \def\loadbox#1#2{\setbox#1=\hbox{\the#2}}                            % NOTE 60
  441. \newcount\headcount\newcount\footcount
  442. \def\suspendheading#1{\global\headcount=#1}
  443. \def\suspendfooting#1{\global\footcount=#1}
  444. \def\noheading{\suspendheading\m@ne}
  445. \def\nofooting{\suspendfooting\m@ne}
  446. \def\resumeheading{\suspendheading\zer@}
  447. \def\resumefooting{\suspendfooting\zer@}
  448. \headline{\ifnum\headcount=\z@\loadbox\tw@\centerheading            % NOTE 61
  449.         \loadbox\zer@\leftheading\loadbox\@ne\rightheading
  450.         \loadbox\thr@@\insideheading\loadbox\f@ur\outsideheading\buildline
  451.     \else\hfil\ifnum\headcount>\z@\global\dec\headcount\fi\fi}
  452. \footline{\ifnum\footcount=\z@\loadbox\tw@\centerfooting            % NOTE 62
  453.         \loadbox\zer@\leftfooting\loadbox\@ne\rightfooting
  454.         \loadbox\thr@@\insidefooting\loadbox\f@ur\outsidefooting\buildline
  455.     \else\hfil\ifnum\footcount>\z@\global\dec\footcount\fi\fi}
  456. \resumeheading
  457. \resumefooting
  458. % footline is normally a centered page number in font \tenrm
  459. \centerfooting{\tenrm\folio}
  460. % BOX MACROS
  461. \newdimen\boxline
  462. \newdimen\boxspace
  463. \boxline .01332in
  464. \boxspace 5pt
  465. \newdimen\depthbox@
  466. \def\boxit#1{\hbox{\vrule width\boxline                              % NOTE 63
  467.                   \vbox{\hrule height\boxline\kern\boxspace
  468.                        \hbox{\kern\boxspace
  469.                             \vbox{\halign{\hfil##\hfil\cr\strut#1\strut\cr}}%
  470.                         \kern\boxspace}%
  471.                   \kern\boxspace\hrule height\boxline}%
  472.               \vrule width\boxline}}
  473. \def\centerbox#1{\vskip\abovedisplayskip                             % NOTE 64
  474.     \centerline{\boxit{#1}}%
  475.     \vskip\belowdisplayskip}
  476. \def\textbox#1{\depthbox@=\dp\strutbox\advance\depthbox@ by .4\p@    % NOTE 65
  477.         \ifvmode\indent\fi\setbox\z@\hbox{\vrule
  478.         \vbox{\hrule\hbox{\kern\p@#1\strut\kern\p@}\hrule}%
  479.         \vrule}\lower\depthbox@\box\z@}
  480. % HP2680A and HP2688A COPY CONTROL MACROS                            % NOTE 66
  481. \newcount\oldcopy\newcount\copycnt
  482. \def\copy@{\globalspecial{HP2688A,HP2680A COPIES \number\copycnt}}
  483. \def\selectcopycount{\afterassignment\copy@\copycnt}
  484. \def\copieson{\global\count\copycnt=\oldcopy\copy@}
  485. \def\copiesoff{\global\count\copycnt=1 \copy@}
  486. \def\copies{\afterassignment\copieson\global\oldcopy}
  487. \copycnt=1
  488. \oldcopy=2
  489. % HP2680A and HP2688A LOGICAL PAGE CONTROL (LPC) MACROS               % NOTE 67
  490. \def\lplist#1{\globalspecial{HP2688A,HP2680A ILP #1}}
  491. \def\lpdef#1{\globalspecial{HP2688A,HP2680A LP #1}}
  492. \newif\ifempty@\empty@true
  493. \newcount\lpcount@\newcount\nextlp@
  494. \def\selectlpcounter#1{\lpcount@#1 \setlpcount@{\the\lpcount@}}
  495. \def\setlpcount@#1{\globalspecial{HP2688A,HP2680A ELP #1}}
  496. \def\lpageto{\eject\afterassignment\lpeject@\nextlp@}
  497. \def\ppageto{\eject\afterassignment\lpage@\nextlp@}
  498. \def\lpeject@{\nextlp@=-\nextlp@\lpage@}
  499. \def\lpresume{\eject\nextlp@=\z@\lpage@}
  500. \def\lpreset{\eject\nextlp@=33 \lpage@ \nextlp@=\z@}
  501. \def\lpexit{\eject\nextlp@=34 \lpage@ \nextlp@=\z@}
  502. \def\lpage@{\ifempty@\count\lpcount@=\nextlp@\global\empty@false\fi}
  503. \everyjob{\message{Using HP TeX  Version \fmtversion}\selectlpcounter2 {}}
  504. % TABLE MACROS                                                        % NOTE 68
  505. \newcount\maxcol@
  506. \newbox\topstrutbox \def\topstrut{\unhcopy\topstrutbox}
  507. \setbox\topstrutbox=\hbox{\vrule height11pt depth0pt width0pt}
  508. \newbox\botstrutbox \def\botstrut{\unhcopy\botstrutbox}
  509. \setbox\botstrutbox=\hbox{\vrule height0pt depth4pt width0pt}
  510. \newdimen\tableline \tableline.01332in
  511. \newskip\tablespace \tablespace5pt
  512. \def\paragraph#1{\vbox{\hrule height\z@ width\hsize depth\z@#1}}
  513. \def\tbar{\ifvmode\hrule\else\vrule width\hsize depth\z@\fi height\tableline}
  514. \def\uptoks@{\inc\cntA@\inc\cntB@                                     % NOTE 69
  515.     \ifnum\cntA@<\count19 \ifnum\cntB@<\count19 \else\err@\fi\else\err@\fi}
  516. \def\err@{\errmessage{Columns too wide for tabular format}}
  517. \def\bump@{\ifnum\cntC@<\maxcol@\inc\cntC@\uptoks@\fi}                % NOTE 70
  518. \def\tableformat#1{\tablelet\just@\just@\relax\parse@#1~\done@~}      % NOTE 71
  519. \def\tablerow#1{\tablelet\bbar@\wbar@\endrow@\parse@#1~\done@~}       % NOTE 72
  520. \def\tablebar#1{{\let\topstrut\relax\let\botstrut\relax\tablespace\z@%% NOTE 73
  521.     \tablerow{#1}}}
  522. \def\tablelet#1#2#3{\let\b@#1\let\w@#2\let\f@#3\cntA@\count15 \cntB@\count11%
  523.     \cntC@\z@\let\parse@=\parseline@\ifhmode\par\else\nointerlineskip\fi}
  524.                                                                      % NOTE 74
  525. \def\just@#1{\let\b@\tform@\let\w@\tform@\maxcol@\z@\let\tablejust@#1}
  526.                                                                      % NOTE 75
  527. \def\tform@#1{\tform@@#1~}                                            % NOTE 76
  528. \def\tform@@#1#2~{\uptoks@\toks\cntA@{#1}\dimen\cntB@#2\inc\maxcol@}  % NOTE 77
  529. \def\bbar@#1{\beginrow@{#1}\vrule width\tableline\vrule width\z@#1}   % NOTE 78
  530. \def\wbar@#1{\beginrow@{#1}\kern\tableline\vrule width\z@#1}          % NOTE 79
  531. \def\beginrow@#1{\let\b@\vbar@\let\w@\ibar@\setbox\z@=\hbox\bgroup%   % NOTE 80
  532.     \parindent\z@\leftskip\tablespace\rightskip\tablespace\let\span=\span@}
  533. \def\endrow@{\kern-\dimen\cntB@\egroup\tablejust@{\unhbox\z@}}        % NOTE 81
  534. \def\vbar@#1{\futurelet\lookahead@\cs@#1~\vrule width\tableline}      % NOTE 82
  535. \def\ibar@#1{\futurelet\lookahead@\cs@#1~\kern\tableline}             % NOTE 83
  536. \def\cs@#1~{\ifx\span@\lookahead@#1~\else\span@\@ne#1~\fi\lower\ht\z@\box\z@}
  537.                                                                       % NOTE 84
  538. \def\parseline@#1~{\ifx\done@#1\let\parse@\f@\else\let\p@ss\parsecol@%
  539.                      \p@ss#1|\done@|\fi\parse@}                       % NOTE 85
  540. \def\parsecol@#1|{\def\parsemode@{\ifx\done@\lookahead@\w@{#1}%       % NOTE 86
  541.     \let\p@ss\lastp@ss\else\b@{#1}\fi\p@ss}%
  542.     \futurelet\lookahead@\parsemode@}
  543. \def\lastp@ss#1|{}
  544. \def\span@#1#2~{\bump@\hsize\dimen\cntB@\edef\x@{\the\toks\cntA@}%    % NOTE 87
  545.     \for\count@=2to#1do%
  546.         {\bump@\advance\hsize\dimen\cntB@\advance\hsize\tableline}%
  547.     \setbox\z@=\x@{\topstrut#2\botstrut}}
  548. % SECTION AND HEADING MACROS                                          % NOTE 88
  549. \newcount\basehead\basehead=\count10
  550. \advance\count10by4 % This allocates 4 counters for head counters
  551. \newcount\hdlevel
  552. \def\setlevelno#1{\hdlevel=0 \cntA@=\basehead\sethead@0#1.-1.\head@}  % NOTE 89
  553. \def\sethead@#1.{\ifnum-1=#1 \let\next@=\relax\else\let\next@=\sethead@
  554.                                                                       % NOTE 90
  555.     \ifnum\hdlevel<4 \inc\hdlevel\inc\cntA@\count\cntA@=#1\fi\fi\next@}
  556. \def\head#1{\ifnum#1>\hdlevel\uplevel@{#1}\else                       % NOTE 91
  557.     \hdlevel=#1\cntA@=#1\advance\cntA@\basehead\fi
  558.     \inc{\count\cntA@}\head@}
  559. \def\uplevel@#1{\inc\hdlevel\cntA@=\hdlevel                           % NOTE 92
  560.     \advance\cntA@\basehead\count\cntA@=0
  561.     \ifnum\hdlevel=#1 \else\uplevel@{#1}\fi}
  562. \def\head@{{\inc\basehead\xdef\levelno{\the\count\basehead}           % NOTE 93
  563.     \for\cntB@=\tw@ to\hdlevel do{\inc\basehead
  564.         \xdef\levelno{\levelno.\the\count\basehead}}}}
  565. \setlevelno{0}
  566. \newtoks\firstlevelhead   \def\headA@{\head\@ne\the\firstlevelhead}   % NOTE 94
  567. \newtoks\secondlevelhead  \def\headB@{\head\tw@\the\secondlevelhead}
  568. \newtoks\thirdlevelhead   \def\headC@{\head\thr@@\the\thirdlevelhead}
  569. \newtoks\fourthlevelhead  \def\headD@{\head\f@ur\the\fourthlevelhead}
  570. \def\level#1#2{\def\title{#2}%                                        % NOTE 95
  571.     \ifcase#1\relax\or\headA@\or\headB@\or\headC@\or\headD@\fi}
  572. \firstlevelhead{\vfill\eject\vbox to1.5in{}\centerline{\fourteenbf\title}%
  573.     \vskip1.0in\ctswrite{\vrule height20pt width0pt\tenbf\title}}
  574. \secondlevelhead{\need.75in\bigskip\leftline{\twelvebf\levelno\enspace\title}%
  575.     \medskip\ctswrite{\hskip15pt\tenrm\title}}
  576. \thirdlevelhead{\need.6in\medskip\leftline{\tenbf\levelno\enspace\title}%
  577.     \ctswrite{\hskip30pt\tenrm\title}}
  578. \fourthlevelhead{\need.5in\leftline{\tenrm\levelno\enspace\title}%
  579.      \ctswrite{\hskip45pt\tenrm\title}}
  580. % CONTENTS FILE MACROS
  581. \newwrite\cnts@
  582. \newif\ifnocts@\nocts@true
  583. \newtoks\topofcontents
  584. \newtoks\botofcontents
  585. \let\content@=\let%                                                  % NOTE 96
  586. \def\ctswrite#1{\ifnocts@\openout\cnts@=\jobname*[*]. \nocts@false\fi% NOTE 97
  587.     {\def\_{\kern.06em \vbox{\hrule width.3em}}\let\the=0
  588.     \edef\a@{\write\cnts@{\content@{#1}{\the\pageno}}}\a@}}
  589. {\catcode`\@=12 \gdef\content@ #1#2{\need.5in\lline{#1\dotfil#2}}}
  590. \def\contents{\ifnocts@\else\closeout\cnts@\null\supereject          % NOTE 98
  591.     \begingroup\pageno\m@ne\null\the\topofcontents\input\jobname*.
  592.     \the\botofcontents\eject\endgroup\nocts@true\fi}
  593. \topofcontents{\noheading\vskip1in plus1fil
  594.     \centerline{\fourteenbf Table of Contents}\vskip1in plus1fil}
  595. \botofcontents{\vfil}
  596. % FOOTNOTES AND INSERTIONS
  597. \def\vfootnote#1{\insert\footins\bgroup                               % NOTE 99
  598.     \interlinepenalty\interfootnotelinepenalty
  599.     \splittopskip\ht\strutbox % top baseline for broken footnotes
  600.     \splitmaxdepth\dp\strutbox \floatingpenalty\@MM
  601.     \realhsize\leftskip\z@skip \rightskip\z@skip
  602.     \baselineskip1\baselineskip
  603.     \textindent{#1}\footstrut\futurelet\next\fo@t}
  604. \newcount\notenumber
  605. \def\resetnotes{\global\notenumber=0 }
  606. \def\note{\global\inc\notenumber\footnote{$^{\the\notenumber}$}}     % NOTE 100
  607. \def\midinsert{\@midtrue\p@gefalse\@ins}                             % NOTE 101
  608. \def\@ins{\par\begingroup\setbox\z@\vbox\bgroup\realhsize\divide\vsize\nocol@}
  609.                                                                      % NOTE 102
  610. \def\endinsert{\egroup\count@-100 % finish the \vbox                 % NOTE 103
  611.   \ifp@ge\else\dimen@\ht\z@\advance\dimen@\dp\z@
  612.     \advance\dimen@12\p@\multiply\dimen@-\nocol@
  613.     \advance\dimen@-\pagetotal\advance\dimen@\pagegoal
  614.     \ifdim\dimen@<\z@\@midfalse\else\count@100 \fi\fi
  615.   \if@mid \balance@
  616.       \global\setbox\contrb@\vbox{\unvbox\contrb@\bigskip\box\z@}\newtotal@
  617.     \else\insert\topins{\penalty\count@ % floating insertion
  618.       \splittopskip\z@skip\splitmaxdepth\maxdimen\floatingpenalty\z@
  619.       \ifp@ge \divide\vsize\nocol@ \dimen@\dp\z@
  620.       \vbox to\vsize{\unvbox\z@\kern-\dimen@}% depth is zero
  621.       \else \box\z@\nobreak\bigskip\fi}\fi\endgroup}
  622. % COLUMN MACROS                                                     % NOTE 104
  623. \def\BEGINtwocolumns{\multicol@\tw@}
  624. \def\BEGINthreecolumns{\multicol@\thr@@}
  625. \def\ENDtwocolumns{\balance@\goal@\divide\endgroup\newtotal@\begingroup}
  626. \let\ENDthreecolumns=\ENDtwocolumns
  627. \def\balance{\balance@\newtotal@}                                   % NOTE 105
  628. \def\balance@{\par{\let\ifreal@=\iffalse\eject}}                    % NOTE 106
  629. \def\newtotal@{{\each@{\the\toks\count@}                            % NOTE 107
  630.     \ifold@\insert\hacker@{}\prevtotal@\pagetotal-\dimen@\fi}}
  631. \def\multicol@#1{\ifnum\nocol@>\@ne\errset{You can't have columns   % NOTE 108
  632.         within columns. \string\start{\blockname@} ignored}\endgroup
  633.     \else\balance@\nocol@=#1\goal@\multiply\advance\hsize\columnspace
  634.     \divide\hsize#1\advance\hsize-\columnspace
  635.     \multiply\vsize#1\brokenpenalty\z@
  636.     \each@{\multiply\count\count@\nocol@\multiply\skip\count@\nocol@}%
  637.     \newtotal@\global\dimen@=\baselineskip\baselineskip\dimen@ plus\dimen@\fi}
  638. \message{output routines}
  639. % OUTPUT ROUTINES                                                    % NOTE 109
  640. \newbox\contrb@ \newbox\out@
  641. \newdimen\columnspace
  642. \columnspace=.5in
  643. \let\ifreal@=\iftrue
  644. \newcount\nocol@ \nocol@=1
  645. \newinsert\hacker@
  646. \def\ifold@{\ifvoid\contrb@\else}
  647. \def\ifcol@{\ifnum\nocol@=\@ne\setbox\out@=\box\@cclv \else}
  648. \def\setboxA@{\inc\cntA@\setbox\cntA@}
  649. \def\boxA@{\inc\cntA@\box\cntA@}
  650. \def\each@#1{\for\count@=\count19 to254 do{#1}}
  651. \def\unglue@#1{\setbox#1=\vbox{\unvbox#1}}
  652. \def\realhsize{\advance\hsize\columnspace\multiply\hsize\nocol@
  653.     \advance\hsize-\columnspace}
  654. \output{\hpoutput}
  655. \def\hpoutput{\splittopskip=\topskip
  656.     \setbox\hacker@=\box\voidb@x
  657.     \ifvoid\contrb@\dimen@=\ht\@cclv
  658.     \else\prevtotal@\advance\dimen@\ht\@cclv\fi
  659.     \ifreal@\realoutput@\else\fakeoutput@\fi
  660.     \each@{\global\toks\count@\ifvoid\count@{}\else{\insert\count@{}}\fi}}
  661. \def\realoutput@{\ifcol@\splitcol@\split@\setheight@\setout@        % NOTE 110
  662.     \unvbox\@cclv \penalty\outputpenalty\fi
  663.     \setbox\@cclv=\pagestuff@{}\each@{\divide\skip\count@\nocol@}%
  664.     \realhsize\divide\vsize\nocol@\leftskip\z@\rightskip\z@
  665.     \plainoutput\global\empty@true
  666.     \global\count\lpcount@=\nextlp@\ifnum\nextlp@>32 \global\nextlp@\z@\fi}
  667. \def\fakeoutput@{\unglue@{\@cclv}\global\let\ifreal@=\iftrue        % NOTE 111
  668.     \ifcol@\dimen@=\baselineskip
  669.          \dimen@=\ifnum\nocol@>2 2\dimen@ \else 1.1667\dimen@ \fi
  670.          \advance\dimen@\ht\@cclv\splitcol@{\box\@cclv}\setmax@\setout@\fi
  671.      \dimen@=\dp\out@\global\setbox\contrb@=\pagestuff@{\vskip-\dimen@}}
  672. \def\makeheadline{\vbox to\z@{\vskip-22.5\p@
  673.   \lline{\vbox to8.5\p@{}\the\headline}\vss}\nointerlineskip}
  674. \def\makefootline{\baselineskip24\p@\lline{\the\footline}}
  675. \def\pagecontents{\ifvoid\topins\else\unvbox\topins\fi
  676.   \unvbox\@cclv % open up \box255
  677.   \ifvoid\footins\else % footnote info is present
  678.     \vskip\skip\footins
  679.     \footnoterule
  680.     \unvbox\footins\fi
  681.   \ifr@ggedbottom\vfil\fi}
  682. \def\splitcol@#1{\divide\dimen@\nocol@\cntA@=\count14
  683.     \for\count@=\tw@ to\nocol@ do{\setboxA@=\split@}\setboxA@=#1}
  684. \def\split@{\ifvoid\@cclv\vbox{\lline\hfil\vfil}\else\vsplit\@cclv to\dimen@\fi}
  685. \def\setheight@{\ifold@\setmax@\fi}
  686. \def\pagestuff@#1{\vbox{\ifold@\unvbox\contrb@\medskip\fi\unvbox\out@#1}}
  687. \def\setout@{\cntA@=\count14 \setbox\out@=\vbox{\hbox
  688.     {\for\count@=\tw@ to\nocol@ do{\boxA@\hskip\columnspace}\boxA@}}}
  689. \def\setmax@{\dimen@=\z@ \cntA@=\count14
  690.     \for\count@=\@ne to\nocol@ do{\inc\cntA@\unglue@{\cntA@}%
  691.     \ifdim\ht\cntA@>\dimen@ \dimen@=\ht\cntA@\fi}%
  692.     \for\count@=\@ne to\nocol@ do{\setbox\cntA@
  693.         =\vbox to\dimen@{\unvbox\cntA@\ifr@ggedbottom\vss\fi}\dec\cntA@}}
  694. \def\prevtotal@{\dimen@=\medskipamount
  695.     \advance\dimen@\ht\contrb@\multiply\dimen@-\nocol@}
  696. \def\goal@#1{\ifdim\pagegoal=\maxdimen\else
  697.     \dimen@=\pagegoal#1\dimen@\nocol@\pagegoal\dimen@\fi}
  698. \catcode`@=12                                                       % NOTE 112
  699.